package leetcode.二叉树;

import java.util.ArrayList;
import java.util.List;

/**
 * 给你一个二叉搜索树的根节点 root ，返回 树中任意两不同节点值之间的最小差值 。
 *
 * 差值是一个正数，其数值等于两值之差的绝对值。
 */
public class 二叉搜索树的最小绝对差530 {

    private List<Integer> list = new ArrayList<>();

    public int getMinimumDifference(TreeNode root) {
        list.clear();
        process(root);
        if(list.size() < 2)
            return -1;
        int min = list.get(1) - list.get(0);
        for (int i = 0; i < list.size() - 1; i++) {
            if(list.get(i+1) - list.get(i) < min)
                min = list.get(i+1) - list.get(i);
        }
        return min;

    }

    private void process(TreeNode root) {
        if (root == null)
            return;
        process(root.left);
        list.add(root.val);
        process(root.right);
    }
}
